package com.briup.smartcity_group1.context;

import com.briup.smartcity_group1.service.impl.LoginServiceImpl;
import com.briup.smartcity_group1.web.interceptor.TokenInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashSet;
import java.util.Set;

/**
 * @author congee(congee02 @ 163.com)
 * @date 1/4/2023 6:01 PM
 */
@Configuration
public class TokenContext {

    public static final int BLACKLIST_MAX_SIZE = 1000;
    /**
     * 维护一个 token 黑名单，当用户登出 {@link LoginServiceImpl#logout()} 时，将 token 加入黑名单。
     * 当用户使用的 token 在黑名单中时，拦截器不允许放行。
     * 当黑名单 token 数量超过 {@value BLACKLIST_MAX_SIZE} 时，清空黑名单
     * {@link TokenInterceptor#preHandle(HttpServletRequest, HttpServletResponse, Object)}。
     * @return 存放 token 的黑名单
     */
    @Bean("tokenBlackList")
    public Set<String> tokenBlackList() {
        return new HashSet<String>();
    }

}
